package com.itheima.day08.myGenerictity.test5;

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        ArrayList<Integer> list1 = new ArrayList<>();
        ArrayList<Number> list2 = new ArrayList<>();
        ArrayList<Object> list3 = new ArrayList<>();

        // 继承关系：Integer -> Number -> Object

        methed1(list1);
        methed1(list2);
        // methed1(list3); // 报错

        // methed2(list1); // 报错
        methed2(list2);
        methed2(list3);

    }
    // 通配符
    // 向上限定，只允许是该类型及其子类
    public static void methed1(ArrayList<? extends Number> list){}

    // 向下限定，只允许是该类型及其父类
    public static void methed2(ArrayList<? super Number> list){}


    public static void methed3(ArrayList<?> list){
//        类型通配符<?>
//        ArrayList<?>: 表示元素类型未知的ArrayList,它的元素可以匹配任何的类型
//        但是并不能把元素添加到ArrayList中了,获取出来的也是父类类型

    }


}
